﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using BE;
using System.Data;
using CrystalDecisions.Shared;
using System.Globalization;

using System.IO;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Configuration;

namespace UI.Tesoreria
{
    public partial class frmReporteComprobanteVenta : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LLenarComboConceptos();                                              
                LLenarComboTipoComprobantes();
                lblMontoTotal.Text = "";
                lblMontoTexto.Visible = false;
                txtFechaApertura.Text = DateTime.Now.Date.ToString("dd/MM/yyyy");
                txtFechaCierre.Text = DateTime.Now.Date.ToString("dd/MM/yyyy");
            }
            else
            {               
            }          
        }

        #region "Metodos"
        
        private void LLenarComboConceptos()
        {
            ComprobanteVenta_BL cp = new ComprobanteVenta_BL();
            List<ConceptoTesoreria> lista = cp.ObtenerConceptos();
            ddlConceptos.DataSource = lista;
            ddlConceptos.DataTextField = "Nombre";
            ddlConceptos.DataValueField = "ID";
            ddlConceptos.DataBind();
            ddlConceptos.Items.Insert(0, "TODOS");
        }


        private  DataTable DataReporteNuevo(){
            try
            {
                string filtro1, filtro2;
                DateTime filtro3, filtro4;
                string  filtro5;
                Int32 filtro6;
                
                filtro1 = ddlConceptos.SelectedItem.Text;
                filtro2 = txtNombreCliente.Text.Trim();
                filtro3 = Convert.ToDateTime(txtFechaApertura.Text);
                filtro4 = Convert.ToDateTime(txtFechaCierre.Text);
                filtro5 = ComboTipoDocumento.SelectedItem.Text;

                if (chkTodosEstados.Checked == true)
                {
                    filtro6 = 3;
                }
                else if (chkActivos.Checked)
                {
                    filtro6 = 0;
                }
                else if (chkAnulados.Checked)
                {
                    filtro6 = 1;
                }
                else
                {
                    filtro6 = 3;
                }

                ReporteComprobanteVenta_BL obj = new ReporteComprobanteVenta_BL();
                DataTable dato = new DataTable();

                dato = obj.ReporteComprovanteVenta(filtro2, filtro1, filtro3, filtro4, filtro5, filtro6);
                return dato;
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message;
                return null;
            }
        }

        private void llenaGrilla()
        {

            DataTable dato = DataReporteNuevo();
            grvReporteComprobanteVenta.DataSource = dato;
            grvReporteComprobanteVenta.DataBind();

            CuentaItemsGrilla(dato);
  
            decimal monto = 0;
            foreach (DataRow row in dato.Rows)
            {
                monto += Convert.ToInt32(row[6]);               
            }
            lblMontoTotal.Text = monto.ToString("0.00");

            lblMontoTexto.Visible = true;

        }

        void llenaGrillaCompleto()
        {
            ReporteComprobanteVenta_BL obj = new ReporteComprobanteVenta_BL();
            DataTable dato = new DataTable();

            dato = DataReporteNuevo();
            grvReporteComprobanteVenta.DataSource = dato;
            grvReporteComprobanteVenta.DataBind();

            CuentaItemsGrilla(dato);

            //this.grvReporteComprobanteVenta.Columns[7].Visible = false;
        }

        public void CuentaItemsGrilla(DataTable dato)
        {
            LabelError.Text = "";

            if (dato.Rows.Count == 0)
            {
                grvReporteComprobanteVenta.Caption = "No se encontró coincidencias";
                LabelError.Text = "No se encontraton coincidencias";
                //lblMensaje.Text = "No se encontró coincidencias";
            }
            else if (dato.Rows.Count == 1)
            {
                grvReporteComprobanteVenta.Caption = "Total de items - 1 registro encontrado";
                //lblMensaje.Text = "";
            }
            else
            {
                grvReporteComprobanteVenta.Caption = "Total de items - " + dato.Rows.Count + " registros encontrados";
                //lblMensaje.Text = "";
            }
        }

        private void LLenarComboTipoComprobantes()
        {
            ComprobanteVenta_BL cp = new ComprobanteVenta_BL();
            List<TipoDocumento> lista = cp.ObtenerTipoDocumentos();
            ComboTipoDocumento.DataSource = lista;
            ComboTipoDocumento.DataTextField = "Nombre";
            ComboTipoDocumento.DataValueField = "IDTipoCp";
            ComboTipoDocumento.DataBind();
            ComboTipoDocumento.Items.Insert(0, "TODOS");
        }

        protected void ExportToExcel(object sender, EventArgs e)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            using (StringWriter sw = new StringWriter())
            {
                HtmlTextWriter hw = new HtmlTextWriter(sw);

                //To Export all pages
                grvReporteComprobanteVenta.AllowPaging = false;

                //this.BindGrid();
                //llenaGrilla();
                llenaGrillaCompleto();

                grvReporteComprobanteVenta.HeaderRow.BackColor = Color.White;
                foreach (TableCell cell in grvReporteComprobanteVenta.HeaderRow.Cells)
                {
                    cell.BackColor = grvReporteComprobanteVenta.HeaderStyle.BackColor;
                }
                foreach (GridViewRow row in grvReporteComprobanteVenta.Rows)
                {
                    row.BackColor = Color.White;
                    foreach (TableCell cell in row.Cells)
                    {
                        if (row.RowIndex % 2 == 0)
                        {
                            cell.BackColor = grvReporteComprobanteVenta.AlternatingRowStyle.BackColor;
                        }
                        else
                        {
                            cell.BackColor = grvReporteComprobanteVenta.RowStyle.BackColor;
                        }
                        cell.CssClass = "textmode";
                    }
                }

                grvReporteComprobanteVenta.RenderControl(hw);

                //style to format numbers to string
                string style = @"<style> .textmode { } </style>";
                Response.Write(style);
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();
            }
        }

        public override void VerifyRenderingInServerForm(Control control)
        {
            /* Verifies that the control is rendered */
        }

        private bool GenerarConsultaReporteComprobanteVenta()
        {
            LabelErrorListado.Text = "";
            try
            {
                ConsultaReporteComprobanteVenta reporte = new ConsultaReporteComprobanteVenta();
                ReporteComprobanteVenta_BL rcv = new ReporteComprobanteVenta_BL();

                DataTable data = DataReporteNuevo();

                if (data.Rows.Count == 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                    return false;
                }

                reporte.SetDataSource(data);

                //reporte.DataDefinition.FormulaFields["Docente"].Text = "'" + nombreProfeReporte + "'";

                // reporte.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, "CpVenta");

                ExportOptions CrExportOptions;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                //String rutaarchivo = System.IO.Path.GetTempFileName() + "CpVenta-" + Guid.NewGuid() + ".pdf";
                String rutaarchivo = System.IO.Path.GetTempFileName() + Guid.NewGuid() + ".pdf";
                CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

                Session["RutaReporte"] = rutaarchivo;
                Session["Reporte"] = reporte;


                CrExportOptions = reporte.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

                    CrExportOptions.FormatOptions = CrFormatTypeOptions;
                }

                reporte.Export();

                return true;
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message;
                return false;
            }
        }

        #endregion

        #region "Botones"

        protected void btnBuscar_Click(object sender, EventArgs e)
        {

            if (txtFechaApertura.Text != "" && txtFechaCierre.Text=="")
            {
                LabelError.Text = "Elegir fecha final";
                txtFechaCierre.Focus();
            }
            else if (txtFechaApertura.Text == "" && txtFechaCierre.Text!="")
            {
                 LabelError.Text = "Elegir fecha inicial";
                txtFechaApertura.Focus();
            }
            else if (txtFechaApertura.Text != "" && txtFechaCierre.Text!="")
            {
                LabelError.Text = "";
            }
            
            llenaGrilla();
        }

        protected void btnExportar_Click(object sender, ImageClickEventArgs e)
        {
            
        }

        protected void btnExportar_Click1(object sender, ImageClickEventArgs e)
        {
            ExportToExcel(null, null);
        }

        protected void btnGenerar_Click(object sender, EventArgs e)
        {
            
            if (GenerarConsultaReporteComprobanteVenta())
            {
                string script = "AbrirVentana('frmReporteComprobanteVentaPdf.aspx')";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
            };
        }

        #endregion

        #region "Grilla"

        protected void grvReporteComprobanteVenta_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grvReporteComprobanteVenta.PageIndex = e.NewPageIndex;
            grvReporteComprobanteVenta.DataBind();
            llenaGrilla();
        }
        
        #endregion

        #region "Checks"

        protected void chkTodosEstados_CheckedChanged(object sender, EventArgs e)
        {
            if (chkTodosEstados.Checked == true)
            {
                chkActivos.Checked = true;
                chkAnulados.Checked = true;      
            }
            else
            {
                chkActivos.Checked = false;
            chkAnulados.Checked = false;
             
            }
        }

        protected void chkAnulados_CheckedChanged(object sender, EventArgs e)
        {
           if (chkAnulados.Checked)
            {
                chkActivos.Checked = false;
                chkAnulados.Checked = true;
            }
            else
            {
                chkActivos.Checked = true;
                    chkAnulados.Checked = false;
            }
        }

        protected void chkActivos_CheckedChanged(object sender, EventArgs e)
        {
            if (chkActivos.Checked)
            {
                chkAnulados.Checked = false;
                chkActivos.Checked = true;
            }
            else
            {
                chkAnulados.Checked = true;
                chkActivos.Checked = false;
            }
        }

        #endregion

       



        

        



        

       









      



        
    }
}